package sim.utils.rndGen;

public class RGCongruencialMixto extends RandomGenerator {

	// cualquier entero impar no divisible ni por 3 ni por 5. Ej: 7
	private final int c = 443;

	// a mod 8 = 5
	private final int a = 13;

	// el entero mas grande que acepte la computadora en este caso un int
	// (2147483647) en el libro 767
	private final int m = 767;

	protected RGCongruencialMixto() {
		super();
	}
	
	protected RGCongruencialMixto(long seed) {
		super(seed);
	}

	@Override
	public double next() {
		this.seed = this.nextLong(seed);
		this.lastRandom = (double) ((double) this.seed / (double) (this.m - 1));
		return this.lastRandom;
	}

	private long nextLong(long seed) {
		long resultado = (this.c + this.a * seed) % this.m;

		return (int) resultado;
	}

}
